一樣昨天的 TB 繼續
module tb1();
//Data_tb1改為Wire
Wire Data_tb1;
reg clk_tb1;
reg reset_tb1;
reg[27:0] Data_Test_input;
assign Data_tb1 = Data_Test_input[0];
Wire[7:0] Out_tb1;
Wire En_out_tb1;
Rs232_test1 Rs232_test_tb1(
.Data1(Data_tb1),.clk(clk_tb1),.reset1(reset_tb1),
.Out1(Out_tb1),.En_out(En_out_tb1)
);
initial begin
Data_tb1<=0; clk_tb1<=0; reset_tb1<=0;
//初始化Data_Test_input
Data_Test_input<={1'b1,8'b11110000, 1'b0,2'b01,16'hffff};
end
always #5 clk_tb1<=~clk_tb1;
always@(posedge clk_tb1) begin
if( Count_Test >= 287 ) begin
Count_Test<=0;
end
else begin
Count_Test <= Count_Test + 1 ;
end
if( Count_Test == 0 ) begin
??????????
end
end
endmodule
昨天我們已經設計完 Data_Test_input,那我們接下來就要寫如何右移
也就是將
我們用數據來看就是
Data_Test_input<={8'b11110000, 1'b0,2'b01,15'hffff, 1'b1};
1.將 Data_Test_input[0]送出去 就是將第0位的 {8'b11110000, 1'b0,2'b01,15'hffff, 1'b1} 送出去
2.然後右移 {8'b11110000, 1'b0,2'b01,15'hffff}
3.將 剛剛送出去的 1'b1 移到 最左邊{1'b1 ,8'b11110000, 1'b0,2'b01,15'hffff}
那我們來設計:
昨天已經把Data_Test_input設計好了,那就將之前的Count_Test初始化
Count_Test 設計為 Reg ,大小就是 288以上
Count_Test初始化
將 Data_Test_input[N+1] 推到 Data_Test_input[N]
將 Data_Test_input[0] 推到 Data_Test_input[最後一位]
Count_Test 設計為 Reg ,大小就是 288以上
reg[27:0] Data_Test_input;
// Count_Test 設計為 Reg ,大小就是 288以上
reg[10:0] Count_Test;
assign Data_tb1 = Data_Test_input[0];
Wire[7:0] Out_tb1;
Wire En_out_tb1;
Rs232_test1 Rs232_test_tb1(
.Data1(Data_tb1),.clk(clk_tb1),.reset1(reset_tb1),
.Out1(Out_tb1),.En_out(En_out_tb1)
);
initial begin
Data_tb1<=0; clk_tb1<=0; reset_tb1<=0;
Data_Test_input<={1'b1,8'b11110000, 1'b0,2'b01,16'hffff};
end
reg[27:0] Data_Test_input;
// Count_Test 設計為 Reg ,大小就是 288以上
reg[10:0] Count_Test;
assign Data_tb1 = Data_Test_input[0];
Wire[7:0] Out_tb1;
Wire En_out_tb1;
Rs232_test1 Rs232_test_tb1(
.Data1(Data_tb1),.clk(clk_tb1),.reset1(reset_tb1),
.Out1(Out_tb1),.En_out(En_out_tb1)
);
initial begin
Data_tb1<=0; clk_tb1<=0; reset_tb1<=0;
Data_Test_input<={1'b1,8'b11110000, 1'b0,2'b01,16'hffff};
// Count_Test初始化
Count_Test<=0;
end
reg[27:0] Data_Test_input 就 28個值,所以就是最高的不要動
1 推到 0 、 2 推到 1 ............ 27 推到 26
always@(posedge clk_tb1) begin
if( Count_Test >= 287 ) begin
Count_Test<=0;
end
else begin
Count_Test <= Count_Test + 1 ;
end
if( Count_Test == 0 ) begin
// 將 Data_Test_input[N+1] 推到 Data_Test_input[N]
Data_Test_input[26:0]<=Data_Test_input[27:1];
end
end
endmodule
always@(posedge clk_tb1) begin
if( Count_Test >= 287 ) begin
Count_Test<=0;
end
else begin
Count_Test <= Count_Test + 1 ;
end
if( Count_Test == 0 ) begin
Data_Test_input[26:0]<=Data_Test_input[27:1];
// 將 Data_Test_input[0] 推到 Data_Test_input[最後一位]
Data_Test_input[27]<=Data_Test_input[0];
end
end
endmodule
這樣就完成了 TB了